# Transferindo audio do linux para o android

Neste pequeno tutorial eu estarei demonstrando como transferir o audio do seu
sistema operacional linux para o seu dispositivo movel android usando a rede
wifi ou um cabo USB com o adb para não ter muito atraso, o processo é bem
simples e ocupa bem pouca memoria em ambos os dispositivos.


## Iniciando o servidor

Para automatizar o processo de ligar/desligar o servidor nós vamos criar um
pequeno script que faz isso automaticamente, copie o seguinte código:

```bash
#!/usr/bin/env bash

# File: pashare

case "$1" in
  start)
    bash $0 stop
    pactl load-module \
        module-simple-protocol-tcp \
        rate=48000 \
        format=s16le \
        channels=2 \
        source=<dispositivo de entrada> \
        record=true \
        port=8000
    ;;
  stop)
    pactl unload-module `pactl list | grep tcp -B1 | grep M | sed 's/[^0-9]//g'`
    ;;
  *)
    echo "Usage: $0 start|stop" >&2
    ;;
esac
```

Agora substitua o `<nome do dispositivo>` pelo nome do dispositivo encontrado
com o comando `pactl list | grep 'Monitor Source'` e salve o arquivo, dê permissão
de execução com `chmod a+x ./pashare`
e pronto, nosso inicializador do servidor esta pronto, vamos iniciar com o comando
`./pashare start` e continuar com a instalação do cliente no android.

## Instalando o app no android

Baixe o PulseDroid [aqui](PulseDroid.apk) copie para o android e faça a instalação,
caso queira instalar usando o adb é só entrar na pasta onde o apk esta e rodar
`adb install ./PulseDroid.apk`, ele vai instalar bem rápido já que o app só tem
16KiB de tamanho


## Conectando ao servidor

A conexão ao servidor pode ser feita de duas formas já citadas e a que eu recomendo é
usando o adb com o dispositivo conectado por USB, a latência usando cabo é bem menor que
via Wi-Fi, acho que o máximo que deu aqui foi uma diferença de uns 100ms, com o Wi-fi
ele fica por volta dos 500ms(meio segundo), veja como conectar a seguir.


### Com o adb

Desta forma você vai precisar do adb instalado em sua maquina, no Debian e derivamos
é só rodar `sudo apt install adb -y` e aguardar o fim da instalação, agora ative o modo
de desenvolvimento no seu android indo nas Configurações -> Sobre o telefone e clicando
em "Número de Compilação" 7 vezes seguidas ate aparecer uma mensagem dizendo que o modo
de desenvolvimento foi ativado, volte para a tela inicial das configurações e procure por
"Opções do desenvolvedor" e ative o modo de depuração USB, conecte o dispositivo ao PC
e digite o comando `adb remote tcp:8000 tcp:8000` no terminal do linux para criar uma
porta 8000 no android que é ligada a do seu PC, abra o PulseDroid e no campo "Server" digite
"localhost", na porta coloque 8000 e pode apetar o Play, agora é só dar um teste e ver se ta
tudo funcionando.


### Pelo Wi-Fi

Com o Wi-Fi a coisa é mais simples mas perde velocidade, dessa forma só precisa que você
encontre o IP do seu PC ligado a rede wifi(pode ser com o comando `ip addr`) e coloque no
campo "Server" a porta cotinua sendo a 8000 e pronto, já vai funcionar normalmente.
